//////////////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2014-present, Egret Technology.
//  All rights reserved.
//  Redistribution and use in source and binary forms, with or without
//  modification, are permitted provided that the following conditions are met:
//
//     * Redistributions of source code must retain the above copyright
//       notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above copyright
//       notice, this list of conditions and the following disclaimer in the
//       documentation and/or other materials provided with the distribution.
//     * Neither the name of the Egret nor the
//       names of its contributors may be used to endorse or promote products
//       derived from this software without specific prior written permission.
//
//  THIS SOFTWARE IS PROVIDED BY EGRET AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
//  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
//  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
//  IN NO EVENT SHALL EGRET AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
//  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
//  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA,
//  OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
//  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
//  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
//  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
//////////////////////////////////////////////////////////////////////////////////////

class Main extends egret.DisplayObjectContainer {



    public constructor() {
        super();
        this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
    }

    private onAddToStage(event: egret.Event) {

        egret.lifecycle.addLifecycleListener((context) => {
            // custom lifecycle plugin

            context.onUpdate = () => {

            }
        })

        egret.lifecycle.onPause = () => {
            egret.ticker.pause();
        }

        egret.lifecycle.onResume = () => {
            egret.ticker.resume();
        }

        this.runGame().catch(e => {
            console.log(e);
        })



    }

    private async runGame() {
        await this.loadResource()
        this.createGameScene();
        // const result = await RES.getResAsync("description_json")
        // this.startAnimation(result);
        await platform.login();
        const userInfo = await platform.getUserInfo();
        console.log(userInfo);

    }

    private async loadResource() {
        try {
            const loadingView = new LoadingUI();
            this.stage.addChild(loadingView);
            await RES.loadConfig("resource/default.res.json", "resource/");
            await RES.loadGroup("preload", 0, loadingView);
            this.stage.removeChild(loadingView);
        }
        catch (e) {
            console.error(e);
        }
    }

    private textfield: egret.TextField;

    /**
     * 创建游戏场景
     * Create a game scene
     */
    private gg:egret.Shape;
    private gg1:egret.Shape;
    private a1:boolean;
    private a3:boolean;
    private createGameScene() {
        let yuan:egret.Shape=new egret.Shape();
        yuan.graphics.beginFill(0xffffff,0);
        yuan.graphics.lineStyle(5,0x0000ff);
        yuan.graphics.drawCircle(this.stage.stageWidth/2,100,100);
        yuan.graphics.endFill();
        this.addChild(yuan);
        this.gg=yuan

        let juxing:egret.Shape=new egret.Shape();
        juxing.graphics.beginFill(0xffffff,0);
        juxing.graphics.lineStyle(5,0x0000ff);
        juxing.graphics.drawRect(0,this.stage.stageHeight/2-50,200,100);
        juxing.graphics.endFill();
        this.addChild(juxing);
        this.gg1=juxing;
        let a=true;
        this.a1=a;
        let a2=true;
        this.a3=a2;
       this.addEventListener(egret.Event.ENTER_FRAME,this.zhen,this)

}

    
     private zhen(){
        if(this.a1==true){
            this.gg1.x+=10;
            if(this.gg1.x>=440){
               this.a1=false;
            }
        }
        if(this.a1==false){
            this.gg1.x-=10;
            if(this.gg1.x<=0){
                this.a1=true;
            }
        }
        if(this.a3==true){
            this.gg.y+=10;
            if( this.gg.y>=this.stage.stageHeight-200){
                this.a3=false;
            }
        }
        if( this.a3==false){
             this.gg.y-=10;
             if(this.gg.y<0){
                 this.a3=true;
             }
        }
     }

}